/**
 * 客户信息
 * @author rxliuli
 */
class BaseCustomer {
    /**
     * 构造函数
     * @param {Number} [i]d
     * @param {String} [unitName] 单位名称
     * @param {Number} [unitNature] 单位属性, 1: 军队,  2: 政府机关,  3: 事业单位,  4: 企业 ,  5: 个人,  6: 社会团体,  999: 其他
     * @param {Number} [idType] 证件类型, 1: 工商营业执照号码,  2: 身份证,  3: 组织机构代码证书,  4: 事业法人证书, 5: 军队代号,  6: 社团法人证书,  7: 护照,  8: 军官证,  9: 台胞证,  999: 其他
     * @param {String} [idNumber] 证件号码
     * @param {Number} [officer] 网络信息安全责任人信息
     * @param {String} [address] 单位地址
     * @param {String} [zipCode] 邮政编码
     * @param {Date} [registerTime] 注册时间
     * @param {Date} [updateTime] 更新时间
     * @param {Date} [serviceRegTime] 服务开通时间
     * @param {Date} [comments] 备注信息
     * @param {Number} [userType] 用户类型, 1: 提供互联网应用服务的用户,  2: 其它用户
     * @param {Number} [reportStatus] 上报状态，1：已上报，2：新增，3：修改，4：删除
     * @param {String} houseId 机房 id，默认为空
     * @param {Number} [unitNameAction=1] 单位名称，模糊查询
     * @param {Number} [idNumberAction=1] 证件号码，模糊查询
     * @param {Number} [domainAction=1] 域名，模糊查询
     * @param {Number} [recordNumberAction=1] 备案号，模糊查询
     * @param {Date} [registerTimeStart] 注册开始时间
     * @param {Date} [registerTimeEnd] 注册结束时间
     * @param {Date} [updateTimeStart] 更新开始时间
     * @param {Date} [updateTimeEnd] 更新结束时间
     * @param {...Object} [args] 其他参数
     */
    constructor({
                    id,
                    unitName,
                    unitNature,
                    idType,
                    idNumber,
                    officer,
                    address,
                    zipCode,
                    registerTime,
                    updateTime,
                    serviceRegTime,
                    comments,
                    userType,
                    reportStatus,
                    houseId,
                    recordNumber,
                    unitNameAction = SearchActionConstant.ACCURATE,
                    idNumberAction = SearchActionConstant.ACCURATE,
                    domainAction = SearchActionConstant.ACCURATE,
                    recordNumberAction = SearchActionConstant.ACCURATE,
                    registerTimeStart,
                    registerTimeEnd,
                    updateTimeStart,
                    updateTimeEnd,
                    idcId = '',
                    ...args
                } = {}) {
        this.id = id
        this.unitName = unitName
        this.unitNature = unitNature
        this.idType = idType
        this.idNumber = idNumber
        this.officer = officer
        this.address = address
        this.zipCode = zipCode
        this.registerTime = registerTime
        this.updateTime = updateTime
        this.serviceRegTime = serviceRegTime
        this.comments = comments
        this.userType = userType
        this.reportStatus = reportStatus
        this.houseId = houseId
        this.recordNumber = recordNumber
        this.unitNameAction = unitNameAction
        this.idNumberAction = idNumberAction
        this.domainAction = domainAction
        this.recordNumberAction = recordNumberAction
        this.registerTimeStart = registerTimeStart
        this.registerTimeEnd = registerTimeEnd
        this.updateTimeStart = updateTimeStart
        this.updateTimeEnd = updateTimeEnd
        this.idcId = idcId
        Object.assign(this, args)
    }
}
